package com.developmentReformProject.service;

/***********************************************************************
 * name: 三年项目服务
 * Module:  ThreeYearProjectLibraryService.java
 * Author:  胡志鹏
 * Purpose: Defines the Interface ThreeYearProjectLibraryService
 ***********************************************************************/

import com.developmentReformProject.dto.ApplyQueryDto;
import com.developmentReformProject.dto.FiveQueryDto;
import com.developmentReformProject.dto.ThreeQueryDto;
import com.developmentReformProject.dto.ThreeYearProjectDto;
import com.developmentReformProject.entity.Apply;
import com.developmentReformProject.entity.Enterprise;
import com.developmentReformProject.entity.FiveYearProject;
import com.developmentReformProject.entity.ThreeYearProject;
import com.developmentReformProject.utils.PageUtil;

import java.util.*;

/** @pdOid 33852b45-842c-46aa-a449-a08402434783 */
public interface ThreeYearProjectLibraryService {
    /**
     * 添加项目
     * @param threeYearProjectDto
     * @return
     */
    String addProject(ThreeYearProjectDto threeYearProjectDto);

    /**
     * 修改项目
     * @param threeYearProjectDto
     * @return
     */
    String updateProject(ThreeYearProjectDto threeYearProjectDto);

    /**
     * 删除项目
     * @param projectNo
     * @return
     */
    String deleteProject(Integer projectNo);

    /**
     * 批量删除项目
     * @param projectNos
     * @return
     */
    String deleteProject(List projectNos[]);

    /**
     * 通过项目编号查找项目
     * @param projectNo
     * @return
     */
    ThreeYearProjectDto queryProjectById(Integer projectNo);

    /**
     * 通过项目编号批量查找项目
     * @param projectNo
     * @return
     */
    List<ThreeYearProjectDto> queryProjectList(List projectNo[]);

    /**
     * 通过预计经济收益分析查找项目
     * @param constructionStatus
     * @return
     */
    List<ThreeYearProjectDto> queryProjectByConstructionStatus(String constructionStatus);

    /**
     * 通过企业编码查找项目
     * @param enterprise
     * @return
     */
    List<ThreeYearProjectDto> queryProjectByentEnterpriseNumber(Enterprise enterprise);

    /**
     * 通过经济收益查找项目
     * @param revenue
     * @return
     */
    List<ThreeYearProjectDto> queryProjectByRevenue(Double revenue);

    /**
     * 通过具体分类查找项目
     * @param specificType
     * @return
     */
    List<ThreeYearProjectDto> queryProjectBySpecificType(String specificType);

    /**
     * 项目书导出
     * @param projectNo
     * @return
     */
    String reportExport(Integer projectNo);

    /**
     * 生成三年项目库分析
     * @param threeYearProjectDto
     * @return
     */
    String overallAnalysisOfTheThreeYearProject(ThreeYearProjectDto threeYearProjectDto);

    public PageUtil<ThreeYearProject> pageList(ThreeQueryDto threeQueryDto) throws Exception;
    PageUtil<ThreeYearProject> cleanThree(ThreeQueryDto threeQueryDto) throws Exception;

}
